昨天我們介紹了雜湊運算是怎麼運行的,並對比特幣區塊鏈的雜湊隨機變數(nonce)
提出了疑惑,今天來看看它到底是幹嘛的吧!
昨天看不懂的圖今天要來解釋了!廢話不多說 先上圖:
這是一個比特幣區塊包含的資料,讓我們來逐一解釋吧...
交易紀錄(Trasaction)
儲存在圖中的第三個框框,也就是tx
的欄位,這裡每一個逗號都記錄了一筆完整的交易,所以這也是整個區塊中最重要的部分,而其他部分都是在驗證區塊。繼續往上看到根雜湊(merkleroot)
,這串數值為所有交易雜湊出來的結果,也就是由整個tx
欄位雜湊而來。
最上面第一個欄位的雜湊(hash)
其實就是這整個區塊的雜湊值,而它是經由剛剛前面講的根雜湊(merkleroot)
及隨機變數(nonce)
雜湊演算出來的結果。重點來了! 讓我們看到第二欄中的困難度(difficulty)
,他其實不是一串小數! 他的小數點後面為底數,前面為指數,而其算出來的數值即為困難度,且必須小於整個區塊的雜湊值。
沒錯! 前面講的雖然有一點饒口聽不太懂,但其實礦工在做的事情就是猜一個nonce,與交易紀錄的根雜湊merkleroot再雜湊一次,且最終得到的雜湊值需小於困難度,若是雜湊值太大就必須要重新猜nonce
繼續雜湊,直到找到合適的值雜湊出來比困難度還小,方可完成挖礦獲得獎勵。而這個猜nonce
的過程可能需要嘗試數十億次,並不簡單喔!
第二欄中有一個叫previousblockhash
的值,而那正是上一個區塊的最終雜湊值。換句話說,每個區塊都會與上一個區塊有所關聯,只要任何一個區塊的資料被修改雜湊值不一樣就會馬上被發現。
今天的內容比較難一點,解釋了一個比特幣區塊是如何被算出來的,建議大家多看幾次圖文。猜nonce,雜湊,比大小就是整個挖礦的過程。
<上一篇> [Day 5] 挖礦?比特幣運行的必需品(二)雜湊運算
<下一篇> [Day 7] 區塊鏈不一定去中心化?
參考資料: